Description
Spellchecker flagged everyday contractions (isn't, won't, I'd, they've, y'all) because the wordlist stores no apostrophe forms and Known() only trimmed possessive 's/'. Fix: curated builtin contraction set (internal/spell/contractions.go) checked in Known(), plus curly->straight apostrophe normalization so 'isn't' and 'isn’t' both match. Kills the manual-add annoyance.
Acceptance Criteria
- #1 Common n't/'d/'ll/'re/'ve/'m/'s contractions not flagged
- #2 Case-insensitive and curly-apostrophe forms accepted
- #3 Non-contraction apostrophe tokens (qwerty'll) still flagged
- #4 Tests cover the above